#ifndef __FLY_CUDA_LOG_H__
#define __FLY_CUDA_LOG_H__

#include <cstddef>
#include <stdio.h>
#include <string.h>

#ifndef _NDEBUG
    #define FILE_NAME (strrchr(__FILE__,'/') ? strrchr(__FILE__,'/') + 1 : __FILE__)
    #define LOG_ERROR(FORMAT, ...) printf("[ERROR][%s]:[%s]:[%d] " FORMAT "\n", FILE_NAME,__FUNCTION__,__LINE__,##__VA_ARGS__)
    #define LOG_WARN(FORMAT, ...) printf("[WARN][%s]:[%s]:[%d] " FORMAT "\n", FILE_NAME,__FUNCTION__,__LINE__,##__VA_ARGS__)
    #define LOG_INFO(FORMAT, ...) printf("[INFO][%s]:[%s]:[%d] " FORMAT "\n", FILE_NAME,__FUNCTION__,__LINE__,##__VA_ARGS__)
    #define LOG_DEBUG(FORMAT, ...) printf("[DEBUG][%s]:[%s]:[%d] " FORMAT "\n", FILE_NAME,__FUNCTION__,__LINE__,##__VA_ARGS__)

#else
    #define LOG(LEVEL, FORMAT, ...) NULL
#endif


#endif // __FLY_CUDA_LOG_H__